.TH FESETROUND 3  "December 18, 2009"
.UC 4
.SH NAME
fesetround, fegetround \- floating point rounding mode control
.SH SYNOPSIS
.nf
.ft B
#include <fenv.h>

int fegetround(void);
int fesetround(int \fIround\fP);
.fi
.SH DESCRIPTION
These functions control the floating point rounding mode. One can use 
fegetround to determine the rounding mode currently in effect and fesetround
the change the rounding mode. Four rounding modes are recognized: FE_TONEAREST,
FE_DOWNWARD, FE_UPWARD and FE_TOWARDZERO. When rounding a value \fIx\fP to an 
integer \fIn\fP, the following approaches can be taken: FE_TONEAREST selects 
the \fIn\fP for which abs(fIx\fP - \fIn\fP) is minimal, preferring an even 
\fIn\fP if there are two possibilities; FE_DOWNWARD selects the largest \fIn\fP
for which \fIn\fP <= fIx\fP; FE_UPWARD selects the smallest \fIn\fP for which 
\fIn\fP >= fIx\fP; and FE_TOWARDZERO selects \fIn\fP with the largest 
abs(\fIn\fP) for which abs(\fIn\fP) <= abs(\fIx\fP).
.SH "RETURN VALUE"
fegetround returns the current rounding mode. fesetround returns 0 if it was 
succesful in adjusting the rounding mode and -1 otherwise. The only possible
reason for failure is an unsupported value for \fIround\fP, which is signalled
by setting errno to EINVAL.
.SH DIAGNOSTICS
fegetround always succeeds. The only possible reason for failure of fesetround
is an unsupported value for \fIround\fP, which is signalled by setting errno to
EINVAL.
.SH "SEE ALSO"
nearbyint(3)
